www.gusucode.com > XerCMS 携云PHP企业建站程序 v2015PHP源码程序 > XerCMS 携云PHP企业建站程序 v2015/XerCMS_v20150724/XerCMS_v20150724/Install/index.php
<?php /** * @name XERCMS * @author Arno <XerCMS@163.com> [QQ:1328013] * @version 1.0.0 * @link http://www.XerCMS.com */ error_reporting(0); ob_end_clean(); define('XERCMS', str_replace('\\', '/',substr(dirname(__FILE__),0,-7))); if(file_exists(XERCMS.'Install/auth.key') && filemtime(XERCMS.'Install/auth.key') + 600 > time()) { } else { //exit('Access Denied'); } define('INC', XERCMS.'XerCMS/'); require_once(XERCMS.'XerCMS/Utils/XerCMS_base.php'); require_once(XERCMS.'XerCMS/Library/XerCMS_db.php'); header('Content-type: text/html; charset=utf-8'); !ini_get('safe_mode') && set_time_limit(0); date_default_timezone_set('PRC'); $urlpath = str_replace('\\', '/',substr(dirname($_SERVER['PHP_SELF']),0,-7)); $do = isset($_GET['do']) ? $_GET['do'] : 'environment'; in_array($do,array('environment','init','config','agreement','language')) && include_once(XERCMS.'Install/tpl/'.$do.'.php'); if($do == 'init') { //echo str_pad('', 1024);@flush(); $db_host = trim(p('dbhost')); $db_user = trim(p('username')); $db_pass = trim(p('password')); $db_name = trim(p('dbname')); $db_mode = trim(p('dbmode')); //echo $db_host; ini('db',array('0'=>array('type'=>'mysql','host'=>$db_host,'user'=>$db_user,'pass'=>$db_pass,'name'=>$db_name,'code'=>'utf8'))); DB::$debug = true; DB::dconnect(); if(!empty(DB::$error)) { exit('<script>$(\'result\').value = $(\'result\').value + "错误提示:'.strtr(DB::$errors,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";$(\'result\').scrollTop = $(\'result\').scrollHeight;</script>'.str_pad('', 1024));//@flush(); } $res = DB::select_db($db_name); if (!$res) { DB::query('CREATE DATABASE IF NOT EXISTS `'.$db_name.'`'); if(!empty(DB::$error)) { exit('<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "错误提示:'.strtr(DB::$error,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";$(\'result\').scrollTop = $(\'result\').scrollHeight;</script>'.str_pad('', 1024));//@flush(); } DB::select_db($db_name); } DB::setcode(); if($db_mode == 'check') { $sqlfile = array('struct/base.sql','struct/archives.sql','struct/special.sql','struct/forum.sql','struct/member.sql'); } else { $sqlfile = array('delete/base.sql','delete/archives.sql','delete/special.sql','delete/forum.sql','delete/member.sql','struct/base.sql','struct/archives.sql','struct/special.sql','struct/forum.sql','struct/member.sql','data/zh-cn.sql'); } $sql = ''; foreach($sqlfile as $k=>$v) { $sql .= "\r\n".file_get_contents(XERCMS.'Install/sql/'.$v)."\r\n"; } $sql = explode(';'."\r\n",$sql); foreach($sql as $k=>$val) { $val = trim($val); if(empty($val) === false) { $res = DB::query($val); if(empty(DB::$error)) { if(preg_match('/CREATE TABLE IF NOT EXISTS ([a-zA-Z0-9\_]+)/',$val,$match)){ echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "创建表['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush(); } else if (preg_match('/DROP TABLE IF EXISTS ([a-zA-Z0-9\_]+)/',$val,$match)) { echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "检查表['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush(); } else if (preg_match('/INSERT INTO\s{0,}[\`]([a-zA-Z0-9\_]+)[\`]\s{0,}/',$val,$match)) { echo '<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "插入数据['.$match[1].']成功\r\n";</script>'.str_pad('', 1024);@flush(); } echo '<script>document.getElementById(\'result\').scrollTop = document.getElementById(\'result\').scrollHeight;</script>'; } else { exit('<script>document.getElementById(\'result\').value = document.getElementById(\'result\').value + "错误提示:'.strtr(DB::$error.$val,array('\''=>'\\\'',"\n"=>'',"\r"=>'')).'\r\n";document.getElementById(\'result\').scrollTop = document.getElementById(\'result\').scrollHeight;</script>').str_pad('', 1024);@flush(); } } } $adminaccount = $_POST['adminaccount'];$adminpass = $_POST['adminpass']; DB::query("INSERT INTO xercms_member VALUES ('1','".$adminaccount."','".md5($adminpass)."',1);"); DB::query("INSERT INTO xercms_member_credits VALUES ('1','0','0','0','0','0','0');"); DB::query("INSERT INTO xercms_member_session VALUES ('1','127.0.0.1','0','');"); DB::query("INSERT INTO xercms_member_verify VALUES ('1','0','0');"); DB::query("INSERT INTO xercms_member_count VALUES ('1',0,0,0,0,0,0,0,'');"); DB::query("INSERT INTO xercms_member_profile (`uid`,`nick`,`group`) VALUES (1,'".$adminaccount."','1');"); ini('globals',array('domain'=>$_SERVER['HTTP_HOST'])); file_put_contents(INC.'Data/domains/'.htmlentities($_SERVER['HTTP_HOST']).'.config','w+'); DB::update('xercms_nav',array('url'=>$urlpath),array('id'=>2)); $files = array('Install/index.php','index.php'); foreach($files as $v) { $content = file_get_contents(XERCMS.$v); $content = strtr($content,array('//exit(\'Access Denied\');'=>'exit(\'Access Denied\');',"header('Location: Install/');exit;\r\n"=>"//header('Location: Install/');exit;\r\n")); $h = fopen(XERCMS.$v,'w+'); fwrite($h,$content); fclose($h); } file_exists(XERCMS.'Install/auth.key') && unlink(XERCMS.'Install/auth.key'); echo '<script>finish();</script>'; exit('<script src="http://www.xercms.com/index.php?m=plugin&id=count&s=install" defer="defer"></script>'); } else if ($do == 'check') { !isset($_GET['type']) && exit('Access Denied'); $type = g('type'); $ret = array(); switch($type) { case '1': $Dirs = array( 'index.php', 'Install/index.php', 'Upfiles/', 'XerCMS/Data/', 'XerCMS/Logs/', 'XerCMS/Caches/', 'XerCMS/Session/XerCMS.htm', 'XerCMS/Language/', 'Assets/player/XerCMS.htm', 'Assets/ads/XerCMS.htm', ); $subDirs = array( 'XerCMS/Language/'=>array( 'XerCMS.htm', 'template/XerCMS.htm', 'plugin/XerCMS.htm'), 'XerCMS/Logs/'=>array( 'XerCMS.htm', 'Database/XerCMS.htm'), 'XerCMS/Caches/'=>array( 'ads/XerCMS.htm', 'fetchSql/XerCMS.htm', 'other/XerCMS.htm', 'patch/XerCMS.htm', 'plugin/XerCMS.htm', 'template/XerCMS.htm', 'apis/XerCMS.htm'), 'Upfiles/'=>array( 'attach/XerCMS.htm', 'images/XerCMS.htm', 'slides/XerCMS.htm', 'special/XerCMS.htm', 'xercms/XerCMS.htm'), 'XerCMS/Data/'=>array( 'XerCMS.htm', '#sVar/XerCMS.htm', 'archives/XerCMS.htm', 'backup/XerCMS.htm', 'domains/XerCMS.htm', 'forum/XerCMS.htm', 'links/XerCMS.htm', 'member/XerCMS.htm', 'plugins/XerCMS.htm') ); foreach($Dirs as $v) { if(isset($subDirs[$v])) { $isable = true; foreach($subDirs[$v] as $sub) { if(!isable($v.$sub)) { $isable = false; $ret[] = array($v.'(.*)','No'); break; } } if($isable) { $ret[] = array($v.'(.*)','Yes'); } } else { $dir = dirname($v);if($dir == '.') $dir = '/'; if(isable($v)) { $ret[] = array($dir,'Yes'); } else $ret[] = array($dir,'No'); } } break; case '2': $version = explode('.', PHP_VERSION); $verNum = $version[0] * 10000 + $version[1] * 100 + $version[2]; if($verNum >= 50300) { $ret[] = array('version','Yes'); } else $ret[] = array('version','< 5.3'); $ext = array('mysql_connect','imagecreate','mb_substr'); foreach($ext as $v) { if(function_exists($v)) { $ret[] = array($v,'Yes'); } else $ret[] = array($v,'No'); } break; } exit(json_encode($ret)); } exit; function isable($path) { $f = XERCMS.$path; $r = fopen($f,'a+'); if($r){return true;} else {return false;} @fclose($r); return $r; } ?>